package com.rw.coco.handler.message.reply;

import com.rw.coco.handler.message.event.CocoMessageEvent;

/**
 * 回复的处理器
 */
public interface ReplyHandler {
    /**
     * 触发的条件
     *
     * @param cocoMessageEvent 事件
     */
    boolean trigger(CocoMessageEvent cocoMessageEvent);

    /**
     * 触发逻辑
     *
     * @param cocoMessageEvent 事件
     */
    void handler(CocoMessageEvent cocoMessageEvent);

    /**
     * 获取优先级
     * 由于拦截顺序会影响到回复结果，所以需要优先级来明确回复顺序
     * 不过因为所有拦截器和特殊的handler必须全部执行，这个数字对于它们来说毫无作用，所以默认为0
     * 可以不用覆写这个方法，使用默认的即可
     * 但对于优先级有意义的handler，即使优先级为0，也要显式的覆写这个方法以示区别
     *
     * @return 优先级
     */
    default int priority() {
        return 0;
    }
}
